/**
 * @FileName Client.java
 * @Package com.designMode.visitor
 * -------------------------------------
 * @function Please write description of function
 * @Date 2016-1-19 上午11:47:19
 * -------------------------------------
 * Copyright (c) 2016,顾博君 All Rights Reserved.
 */
package com.designMode.visitor;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 顾博君
 * @ClassName Client
 * @Date 2016-1-19 上午11:47:19
 * @Function 场景类
 */
public class Client {
    public static void main(String[] args) {
        List<Element> list = ObjectStructure.createList(5);
        for (Element element : list) {
            // 接受访问者
            element.accept(new ConcreteVisitor());
        }
        //        访问者模式的优点是增加操作很容易，因为增加操作意味着增加新的访问者。
        //        访问者模式将有关行为集中到一个访问者对象中，其改变不影响系统数据结构。
        //        其缺点就是增加新的数据结构很困难。

        //增加操作只需要增加一个Visitor
        for (Element element : list) {
            // 接受访问者
            element.accept(new ConcreteVisitor2());
        }
    }
}
